package com.example.jobback.service.recruiter;

import com.example.jobback.po.Company;
import com.example.jobback.po.Position;
import com.example.jobback.po.Recruiter;
import com.example.jobback.po.Seeker;
import com.example.jobback.req.seeker.company.GetPageCompaniesReq;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @InterfaceName: RecruiterCrossService
 * @Description:跨服务-招聘者接口
 * @Author: lhb
 * @Date: 2025/7/12
 */
@Service
public interface RecruiterCrossService {
    /**
     * @Description: 分页查询职位列表
     * @param page
     * @param size
     * @param content
     * @return PageInfo<Position>
     * @Author lhb
     * @CreateTime 2025/7/12 20:12
     */
    PageInfo<Position> getPositions(int page, int size, String content);

    /**
     * @Description: 根据职位id查找职位信息
     * @param positionId
     * @return Position
     * @Author lhb
     * @CreateTime 2025/7/12 20:49
     */
    Position getPositionById(Long positionId);

    /**
     * @Description: 根据userId获取招聘者信息
     * @param userId
     * @return Recruiter
     * @Author lhb
     * @CreateTime 2025/7/12 20:52
     */
    Recruiter getRecruiterByUserId(Long userId);

    /**
     * @Description: 获取热门岗位城市
     * @return List<String>
     * @Author lhb
     * @CreateTime 2025/7/15 10:49
     */
    List<String> getHotPositionCities();

    /**
     * @Description: 根据公司id获取公司信息
     * @param companyId
     * @return Company
     * @Author lhb
     * @CreateTime 2025/7/16 9:48
     */
    Company getCompanyMessage(Long companyId);

    /**
     * @Description:获取指定招聘者发布的岗位
     * @param userId
     * @return List<Position>
     * @Author lhb
     * @CreateTime 2025/7/16 9:48
     */
    List<Position> getPositionsByUserId(Long userId);

    /**
     * @Description: 根据userIds获取招聘者信息
     * @param recruiterUserIdList
     * @return void
     * @Author lhb
     * @CreateTime 2025/7/17 11:34
     */
    List<Recruiter> getRecruiterByUserIds(List<Long> recruiterUserIdList);


    /**
     * @Description: 根据positionIds获取职位信息
     * @param positionIdList
     * @return List<Position>
     * @Author lhb
     * @CreateTime 2025/7/17 11:37
     */
    List<Position> getPositionByIds(List<Long> positionIdList);

    /**
     * @Description: 批量获取公司信息
     * @param companyIds
     * @return List<Company>
     * @Author lhb
     * @CreateTime 2025/7/21 16:28
     */
    List<Company> getCompanyMessagesByIds(List<Long> companyIds);

    /**
     * @Description: 分页获取公司列表
     * @param req
     * @return PageInfo<Company>
     * @Author lhb
     * @CreateTime 2025/7/23 10:38
     */
    PageInfo<Company> getCompanies(GetPageCompaniesReq req);


    /**
     * @Description: 根据公司id获取员工列表
     * @param companyId
     * @return List<Recruiter>
     * @Author lhb
     * @CreateTime 2025/7/23 15:06
     */
    List<Recruiter> getRecruitersByCompanyId(Long companyId);

    /**
     * @Description: 根据公司id获取职位列表
     * @param companyId
     * @return List<Position>
     * @Author lhb
     * @CreateTime 2025/7/23 15:08
     */
    List<Position> getPositionByCompanyId(Long companyId);

    /**
     * @Description: 同步热门企业城市
     * @return List<String>
     * @Author lhb
     * @CreateTime 2025/7/23 16:06
     */
    List<String> getHotCompanyCities();

    /**
     * @Description: 智能推荐企业
     * @param seeker
     * @return List<Company>
     * @Author lhb
     * @CreateTime 2025/7/25 9:44
     */
    List<Company> smartRecommendCompanyList(Seeker seeker);

    /**
     * @Description: 获取总企业数
     * @return Long
     * @Author lhb
     * @CreateTime 2025/7/25 15:48
     */
    Long getCompanyNum();

    /**
     * @Description: 获取活跃职位数
     * @return Long
     * @Author lhb
     * @CreateTime 2025/7/25 15:49
     */
    Long getActivePositions();
}
